package com.zjmzxfzhl.modules.app.entity;

import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.zjmzxfzhl.common.core.base.BaseEntity;
import com.zjmzxfzhl.common.core.validator.constraints.LengthForUtf8;
import javax.validation.constraints.NotNull;

import com.zjmzxfzhl.modules.app.form.DocFilePath;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;

/**
 * 【】实体类
 * 
 * @author 张森荣
 */
@Data
@TableName("T_APP_DOC")
public class AppDoc extends BaseEntity {

    private static final long serialVersionUID = 1L;

    /**
     * ID
     */
    @TableId
//    @NotNull
    @LengthForUtf8(max = 32)
    private String docId;

    /**
     * 标题
     */
//    @NotNull
    @LengthForUtf8(max = 255)
    private String name;

    /**
     * 文件路径([fileName,fileUrl])
     */
//    @NotNull
    @JsonIgnore
    private String filePath;

    /**
     * 文档描述
     */
//    @NotNull
    private String content;

    /**
     * 文档状态
     */
//    @NotNull
    @LengthForUtf8(max = 2)
    private String status;

    /**
     * 文档类型
     */
//    @NotNull
    @LengthForUtf8(max = 2)
    private String docType;

    /**
     * 关联ID
     */
//    @NotNull
    @LengthForUtf8(max = 1000)
    private String docTypeId;

    /**
     * 流程ID
     */
    @LengthForUtf8(max = 64)
    private String modelId;

    /**
     * 表单Key
     */
//    @NotNull
    @LengthForUtf8(max = 100)
    private String formKey;

    /**
     * 表单数据
     */
    private String formData;

    /**
     * 目录ID
     */
//    @NotNull
    @LengthForUtf8(max = 32)
    private String dirId;

    /**
     * 是否删除
     */
    @LengthForUtf8(max = 1)
    private String deleted;

    /**
     * 开始日期(有效期)
     */
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    private Date startDate;

    /**
     * 结束日期(有效期)
     */
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    private Date endDate;

    /**
     * 目录ID
     */
//    @NotNull
    @LengthForUtf8(max = 64)
    private String processInstanceId;
    /**
     * 文档二级类型
     */
//    @NotNull
    @LengthForUtf8(max = 2)
    private String docSubtype;

    /**
     * 会议纪要关联任务id
     */
//    @NotNull
    @LengthForUtf8(max = 1000)
    private String taskMeet;

    /**
     * 文档日期
     */
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    private Date docDate;

    public List<DocFilePath> getDocFilePath() {
        if (getFilePath()!=null) {
            List<DocFilePath> docFilePathList=new ArrayList<>();
            List strArr = JSON.parseObject(getFilePath(),List.class);
            for (Object s:strArr) {
                docFilePathList.add(JSON.parseObject(s.toString(),DocFilePath.class));
            }
            return docFilePathList;
        } else {
            return null;
        }
    }
    public void setDocFilePath(List<DocFilePath> docFilePath) {
        if (docFilePath!=null) {
            List<String> stringList=new ArrayList<>();
            for (DocFilePath s:docFilePath) {
                stringList.add(JSON.toJSONString(s));
            }
            setFilePath(JSON.toJSONString(stringList));
        } else {
            setFilePath("[]");
        }
    }

}